package com.education.welco.mapper;


import com.education.common.pojo.TStudent;
import com.education.welco.pojo.TClass;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 学生入学 数据层
 *
 * @author d
 * @date 2020-05-08
 */
@Repository
public interface TStudentMapper {

    @Select({"select id as userId,class_id as classId,sys_type as studentType from educationmain.sys_user  where sys_phone = #{phone}"})
    TStudent judgeStudent(@Param("phone") String phone);

    /**
     * 查询学生入学信息
     *
     * @param id 学生入学ID
     * @return 学生入学信息
     */
    public TStudent selectTStudentById(Integer id);

    /**
     * 查询大于等于此id 的数据列表
     *
     * @param id
     * @return
     */
    public List<TStudent> selectTStudentByIdGreater(Integer id);

    /**
     * 根据userId 查询数据列表
     *
     * @param userId
     * @return
     */
    public TStudent selectTStudentById2(Integer userId);

    /**
     * 查询学生入学列表
     *
     * @param tStudent 学生入学信息
     * @return 学生入学集合
     */
    public List<TStudent> selectTStudentList(TStudent tStudent);

    /**
     * 查询学生入学列表
     *
     * @param classId 班级id
     * @return 学生入学集合
     */
    public List<TStudent> selectTStudentList1(Integer classId);


    /**
     * 查询学生入学列表
     *
     * @param tStudent 学生入学信息
     * @return 学生入学集合
     */
    public List<TStudent> selectTStudentListOther(TStudent tStudent);


    /**
     * 查询学生入学列表
     *
     * @param tStudent 学生入学信息
     * @return 学生入学集合
     */
    public List<TStudent> selectTStudentListOther2(TStudent tStudent);

    //不包含驳回的学生
    public List<TStudent> selectStudentListRemovebohui(TStudent tStudent);

    /**
     * 新增学生入学
     *
     * @param tStudent 学生入学信息
     * @return 结果
     */
    public int insertTStudent(TStudent tStudent);

    /**
     * 修改学生入学
     *
     * @param tStudent 学生入学信息
     * @return 结果
     */
    public int updateTStudent(TStudent tStudent);

    //根据userId修改学生信息
    public int updateByUserId(TStudent tStudent);

    /**
     * 删除学生入学
     *
     * @param id 学生入学ID
     * @return 结果
     */
    public int deleteTStudentById(Integer id);

    /**
     * 批量删除学生入学
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTStudentByIds(String[] ids);

    TStudent judgeStudent2(@Param("phone") String phone);

    Integer selectStudentNumByClassId(@Param("list") List<Integer> classIdList);

    List<Integer> selectClassIdListByTeaId(Integer teacherId);

    List<TClass> selectClassListByTeaId(Integer teacherUserId);

    TStudent queryStudentAndClassByStuUserId(@Param("userId") Integer userId);

    /**
     * app端登录，并创建登录时间
     *
     * @param phone
     * @return
     */
    TStudent selectClassInfoByPhone(@Param("phone") String phone);

    /**
     * 更新用户表用户班级学校信息
     *
     * @param userId
     * @param classId
     * @param schoolId
     * @param sysType  类型(1学生 2老师 3教务主任)3管理员
     * @return
     */
    int updateInfoForUser(@Param("userId") Integer userId, @Param("classId") Integer classId,
                          @Param("schoolId") Integer schoolId, @Param("sysType") Integer sysType,
                          @Param("customerType") Integer customerType);

    /**
     * sys_user_role新增角色关系
     *
     * @param userId
     * @param roleId
     */
    int insertUserRoleInUser(@Param("userId") Integer userId, @Param("roleId") Integer roleId);
}